package com.lcc.spring;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

/**
 * <一句话功能描述> 获取处理器实现
 * <功能详细描述>
 *
 * @author Mr Lcc
 * @version [版本号, 2024/11/23]
 * @see [相关类/方法]
 * @since [产品/模块版本]
 */
@Component
public class LccBeanPostProcessor implements BeanPostProcessor{

    @Override
    public Object postProcessAfterInitialization(Object bean, String beanName) {

        if (beanName.equals("userService")) {

            return Proxy.newProxyInstance(LccBeanPostProcessor.class.getClassLoader(), bean.getClass().getInterfaces(), (proxy, method, args) -> {
                // 切面
                System.out.println("userService =------->切面逻辑");

                return method.invoke(bean, args);
            });
        }

        // bean
        return bean;
    }
}
